package jp.sinya.temicontact.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.BitmapImageViewTarget;

import jp.sinya.temicontact.R;

public class GlideUtils {

    private static GlideUtils instance;

    private GlideUtils() {
    }

    public static GlideUtils getInstance() {
        if (instance == null) {
            synchronized (GlideUtils.class) {
                instance = new GlideUtils();
            }
        }
        return instance;
    }

    /**
     * 设置圆形的图片
     *
     * @param context
     * @param address        图片地址(全路径) 一个文件的路径  一个Uri
     * @param defaultIconRes 加载失败后的默认图片
     * @param imgIcon
     */
    public void loadCircularIcon(final Context context, String address, int defaultIconRes, final ImageView imgIcon) {
        Glide.with(context)//
                .load(address)//
                .asBitmap()//
                .placeholder(defaultIconRes)//占位图
                .centerCrop()//
                .transform(new GlideCircleTransform(context, 0.1f, context.getResources().getColor(R.color.black))) // 加载边框
                .diskCacheStrategy(DiskCacheStrategy.ALL).error(defaultIconRes)//请求失败/错误 显示图
                .into(new BitmapImageViewTarget(imgIcon) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                        circularBitmapDrawable.setCircular(true);
                        imgIcon.setImageDrawable(circularBitmapDrawable);
                    }
                });
    }

    /**
     * 设置用户圆形的图片
     *
     * @param url 图片地址
     */
    public void loadUserCircularIcon(final Context context, String url, final ImageView imgIcon) {
        Glide.with(context)//
                .load(url)//
                .asBitmap()//
                .placeholder(R.mipmap.ic_launcher)//占位图
                .centerCrop()//
                .diskCacheStrategy(DiskCacheStrategy.ALL).error(R.mipmap.ic_launcher)//请求失败/错误 显示图
                .into(new BitmapImageViewTarget(imgIcon) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                        circularBitmapDrawable.setCircular(true);
                        imgIcon.setImageDrawable(circularBitmapDrawable);
                    }
                });
    }

    /**
     * 加载图片 使用资源id 例如 R.mipmap.bg_honor_score
     */
    public void loadIcon(Context context, int res, int defaultIconRes, final ImageView imgIcon) {
        Glide.with(context).load(res).error(defaultIconRes)//load失敗的Drawable
                .placeholder(defaultIconRes).into(imgIcon);
    }

    /**
     * 加载图片
     *
     * @param address 图片地址(全路径) 一个文件的路径  一个Uri
     */
    public void loadIcon(Context context, String address, int defaultIconRes, final ImageView imgIcon) {
        Glide.with(context).load(address).error(defaultIconRes)//load失敗的Drawable
                .placeholder(defaultIconRes)//loading時候的Drawable
                .diskCacheStrategy(DiskCacheStrategy.ALL) //缓存所有尺寸
                .fitCenter()//中心fit, 以原本圖片的長寬為主
                .into(imgIcon);
    }
}